package com.uplooking.Proxy2;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

@Component
@Aspect
public class MyAspect {
//      
//	1前置通知注解
//	1）声明方法
//	2）在方法加上注解@Before("表达式")
//	表达式说明：("execution(项目名 路径+方法+方法类型&&参数"
//		参数可选
//			被代理对象方法参数
//			target(参数名)：被代理对象方法类型
//			args(参数名)：被代理对象方法参数
		
	
    @Before(value = "execution(* com.uplooking.service.*.*(..))")
	public void BeforeAdv(JoinPoint jp) {
		System.out.println("做好售前服务");
		Object object[]=jp.getArgs();
		System.out.println(object[1]+"  "+object[0]);
	}
    
//    @AfterReturning(value="execution(* com.uplooking.service.*.*(..))",returning="str")
//    public void AfterAdv(String str) {
//    	System.out.println("拿利润分成");
//    	System.out.println(str);
//    }
    
//    @Around(value="execution(* com.uplooking.service.*.*(..))")
//    public void AroudAdv(ProceedingJoinPoint pjp) throws Throwable {
//    	System.out.println("做好售前服务");
//    	pjp.proceed();
//    	System.out.println("拿利润分成");
//    }
    
//    @AfterThrowing(value="execution(* com.uplooking.service.*.*(..))",throwing="ex")
//    public void throwingAdv(Exception ex) {
//    	  
//    	System.out.println("异常信息"+ex.getMessage());
//    	
//    }
    
   
    
    
    
    
    
    
    
    
}
